﻿#include <iostream>
#include <set>
#include <vector>
using namespace std;


//int main(void)
//{
	// 去重+升序
	// 默认为less<int>
	//set<int> s;
	//s.insert(1);
	//s.insert(1);
	//s.insert(2);
	//s.insert(3);
	//s.insert(4);
	//auto it = s.begin();
	//while (it != s.end())
	//{
	//	cout << *it << endl;
	//	++it;
	//}

	// 去重+降序
	//set<int, greater<int>> s;
	//s.insert(1);
	//s.insert(1);
	//s.insert(2);
	//s.insert(3);
	//s.insert(4);
	//auto it = s.begin();
	//while (it != s.end())
	//{
	//	cout << *it << endl;
	//	++it;
	//}

	/*set<int> s;
	s.insert({ 1, 2, 3, 4, 5 });
	for (auto e : s)
	{
		cout << e << " ";
	}*/

	/*set<int> s{ 1, 2, 3, 4 };
	for (auto e : s)
	{
		cout << e << " ";
	}*/

	// 根据ASCll码值来排序
	/*set<string> s;
	s.insert({ "ouyang", "niuma", "guige" });
	for (auto e : s)
	{
		cout << e << " ";
	}*/

	/*set<int> s;
	vector<int> v{ 1,2,3,4,5 };
	s.insert(v.begin(), v.end());
	for (auto e : s)
	{
		cout << e << " ";
	}*/

	//while (!s.empty())
	//{
	//	cout << *s.begin() << endl;
	//	s.erase(s.begin());
	//}

	/*cout << s.size() << endl;
	cout << s.max_size() << endl;*/

	/*int x = 0;
	cin >> x;
	s.erase(x);
	for (auto e : s)
	{
		cout << e << " ";
	}*/
//
//
//	return 0;
//}

//int main()
//{
//	set<int> myset;
//	for (size_t i = 0; i < 10; i++)
//	{
//		myset.insert(i * 10);
//	}
//	for (auto e : myset)
//	{
//		cout << e << " ";
//	}
//	cout << endl;

	// find
	/*auto it = myset.find(20);
	if (it != myset.end())
	{
		myset.erase(it);
	}
	for (auto e : myset)
	{
		cout << e << " ";
	}
	cout << endl;

	int x;
	cin >> x;
	int num = myset.erase(x);
	if (num == 0)
	{
		cout << x << "不存在！" << endl;
	}
	for (auto e : myset)
	{
		cout << e << " ";
	}
	cout << endl;*/

	// 利⽤count间接实现快速查找
	/*cin >> x;
	if (myset.count(x))
	{
		cout << x << "在！" << endl;
	} 
	else
	{
		cout << x << "不存在！" << endl;
	}*/

//	auto itlow = myset.lower_bound(30);
//	auto itup = myset.upper_bound(60);
//	myset.erase(itlow, itup);
//	for (auto e : myset)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	multiset<int> mlset{ 1, 1, 2, 5, 6, 9, 2, 2, 8, 3, 3, 0, 0 };
//	for (auto e : mlset)
//	{
//		cout << e << " ";
//	}
//
//	// 相⽐set不同的是，x可能会存在多个，find查找中序的第⼀个
//	int x;
//	cin >> x;
//	auto pos = mlset.find(x);
//	while (pos != mlset.end() && *pos == x)
//	{
//		cout << *pos << " ";
//		++pos;
//	} 
//	cout << endl;
//
//	// 相⽐set不同的是，count会返回x的实际个数
//	cout << mlset.count(x) << endl;
//	// 相⽐set不同的是，erase给值时会删除所有的x
//	mlset.erase(x);
//	for (auto e : mlset)
//	{
//		cout << e << " ";
//	} 
//	cout << endl;
//
//	return 0;
//}

//class Solution {
//public:
//	vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//		set<int> s1(nums1.begin(), nums1.end());
//		set<int> s2(nums2.begin(), nums2.end());
//		vector<int> ret;
//		auto it1 = s1.begin();
//		auto it2 = s2.begin();
//		while (it1 != s1.end() && it2 != s2.end())
//		{
//			if (*it1 == *it2) {
//				ret.push_back(*it1);
//				++it1;
//				++it2;
//			}
//			else if (*it1 > *it2)
//				++it2;
//			else
//				++it1;
//		}
//		return ret;
//	}
//};

